其他
太酷炫了,我用 Python 画出了北上广深的地铁路线动态图
The following article is from 快学Python Author 朱小五
坐标点的采集
http://map.amap.com/subway/index.html?&1100
response = requests.get(url)
result = json.loads(response.text)
stations = []
for i in result['l']:
station = []
for a in i['st']:
station.append([float(b) for b in a['sl'].split(',')])
stations.append(station)
pprint.pprint(stations)
pprint
格式化打印结果,方便预览坐标系的转换
金安桥地铁站
,然而在百度地图里,地理位置则指向了几公里外的某大厦。地球坐标系
是国际通用坐标系,比较适合国际地图可视化。不过在我国范围内,一般不会直接使用它,而是使用由国家测绘局在其基础上加密的火星坐标系
。另外还有公司会在火星坐标系
上进行二次加密,比如百度坐标系、搜狗坐标系等。GCJ-02
坐标系。而下文可视化中会调用百度地图的接口,也就是需要在BD-09
坐标系中进行可视化。GCJ-02
转BD-09
的公式,并用python实现此公式:pi = 3.1415926535897932384 #π
r_pi = pi * 3000.0/180.0
def gcj02_bd09(lon_gcj02,lat_gcj02):
b = math.sqrt(lon_gcj02 * lon_gcj02 + lat_gcj02 * lat_gcj02) + 0.00002 * math.sin(lat_gcj02 * r_pi)
o = math.atan2(lat_gcj02 , lon_gcj02) + 0.000003 * math.cos(lon_gcj02 * r_pi)
lon_bd09 = b * math.cos(o) + 0.0065
lat_bd09 = b * math.sin(o) + 0.006
return [lon_bd09,lat_bd09]
GCJ-02
坐标系转成BD-09
的函数,调用这个函数,就可以将高德地图获取的坐标点集合统统转换成百度坐标系。for station in stations:
result.append([gcj02_bd09(*point) for point in station])
BD_09(百度地图)
坐标系的,转换这步就可以直接省略喽~地理可视化
BMap
来可视化了,不过需要先获取百度开放平台的密钥。BMap
,先导入模块from pyecharts import options as opts
from pyecharts.globals import BMapType, ChartType
result
)后,可以调整一下参数以及增添一些控件。百度appkey
记得替换成自己的)BMap(init_opts = opts.InitOpts(width = "800px", height = "600px"))
.add_schema(
baidu_ak = '****************', #百度地图开发应用appkey
center = [116.403963, 39.915119], #当前视角的中心点
zoom = 10, #当前视角的缩放比例
is_roam = True, #开启鼠标缩放和平移漫游
)
.add(
series_name = "",
type_ = ChartType.LINES, #设置Geo图类型
data_pair = result, #数据项
is_polyline = True, #是否是多段线,在画lines图情况下#
linestyle_opts = opts.LineStyleOpts(color = "blue", opacity = 0.5, width = 1), # 线样式配置项
)
.add_control_panel(
maptype_control_opts = opts.BMapTypeControlOpts(type_ = BMapType.MAPTYPE_CONTROL_DROPDOWN), #切换地图类型的控件
scale_control_opts = opts.BMapScaleControlOpts(), #比例尺控件
overview_map_opts = opts.BMapOverviewMapControlOpts(is_open = True), #添加缩略地图
navigation_control_opts = opts.BMapNavigationControlOpts() #地图的平移缩放控件
)
)
map_b.render(path = 'subway_beijing.html')
注:因为是北京地图,所以设置天安门的经纬度[116.403963, 39.915119]为视角中心。
其他效果展示
上海-变色
line
的颜色,可在参数linestyle_opts
中修改color。lilac
——浅紫色广州-卫星图
深圳-个性化配色
mapStyle
,调整自己的配色styleJson
。小结
pyecharts
地理可视化、其他效果展示。参考资料
地学大数据:知乎@师大Giser
[2]百度地图开发mapStyle个性化地图styleJson的配色解决方案: https://blog.csdn.net/weixin_41290949/article/details/106379134
本文代码下载
- EOF -
觉得本文对你有帮助?请分享给更多人
推荐关注「Python开发者」,提升Python技能
点赞和在看就是最大的支持❤️